#!/bin/bash

# 初始化并更新所有子模块，包括嵌套子模块
echo "初始化并更新所有子模块（包括嵌套子模块）..."

# 获取顶级子模块路径列表
submodules=$(git config --file .gitmodules --get-regexp path | awk '{ print $2 }')

# 遍历所有顶级子模块和嵌套子模块
for submodule in $submodules; do
  echo "正在更新子模块: $submodule 及其嵌套子模块"
  
  # 递归更新子模块，忽略错误继续
  git submodule update --init --recursive "$submodule" 2>/dev/null
  
  if [ $? -ne 0 ]; then
    echo "警告: 更新子模块 $submodule 失败，跳过..."
  fi
done

# 最后确保所有子模块都更新
git submodule foreach --recursive 'git submodule update --init --recursive || echo "跳过失败的子模块: $name"'

echo "所有子模块更新完成。"
